Fix PLN amount rounding for compliance with PL tax rules 💰#181
Fix PLN amount rounding for compliance with PL tax rules 💰#181mbronk wants to merge 3 commits intoRustInFinance:mainfrom
PLN amount rounding for compliance with PL tax rules 💰#181Conversation
|
jczaja
left a comment
There was a problem hiding this comment.
I had talked to tax advisor who then called "Naczelna izba skarbowa" to disscuss the matter of rounding. He told me that we should not round every single transaction just a sum of transactions.
Polish tax law requires different rounding methods depending on income type,
which was not previously implemented. This change brings the calculation into
compliance with Art. 63 Ordynacji Podatkowej (OP).
1. Per currency-converted "tax event" (i.e. stock sales, dividend...),
convert each result to full "grosz" (0,01 precision) - before
summing.
Basis: Mathematical rounding rules (0,01zł is the lowest monetary
value)
2. Interests and dividends are separated as they follow different
rounding rules when calculating the lump-sum tax
a) Interests aggregate (art. 30a ust. 1 pkt 3 PIT) as well as
their resulting lump-sum tax, are rounded UP to the nearest
full "grosz" — art. 63 §1a OP
b) Dividends aggregate (art. 30a ust. 1 pkt 4 PIT) as well
as their resulting lump-sum tax, are rounded to the nearest
full ZLOTY (0,50zl -> 1zl) — art. 63 §1 OP
c) Foreign tax withholding: no rounding the standard FX rule
to round to grosz (0,01) precision - rule #1 (above)
d) Net/gross/cost stock proceeds are not subject to lump-sum
tax calculations and reported in full on PIT-38 form, hence
only standard FX rules (#1-above) applies and they are reported
with "grosz" precision.
Signed-off-by: Mateusz Bronk <mbronk@users.noreply.github.com>
ff2d46e to
6bf387a
Compare
Thanks for looking into this! I was aware of it being a little sketchy, but I haven't found any written rule preventing the rounding, and my objective was for the values to match the pen and paper calculations I was doing on a side, to confirm.1 I've now changed the default so there's no per-transaction rounding now, consistent with what your advisor confirmed. Since, to my knowledge, that guidance isn't formally documented anywhere, I kept per-transaction rounding as an opt-in2 ( Footnotes
|
Per tax advisor consultation with Naczelna Izba Skarbowa and Art. 63 Ordynacja Podatkowa, rounding should only be applied to final tax base and tax amount sums, not to individual transactions. Change default behavior to carry full f32 precision through per-transaction FX conversions. The previous per-transaction rounding to grosz is preserved as an opt-in flag: - CLI: --round-per-transaction - GUI: Options menu toggle (MenuBar) Also add default-run to Cargo.toml to resolve binary ambiguity. Signed-off-by: Mateusz Bronk <mbronk@users.noreply.github.com>
6bf387a to
1096aa5
Compare
Signed-off-by: Mateusz Bronk <mbronk@users.noreply.github.com>
e10ff1e to
f74f7bd
Compare
|
@mbronk Hi, thanks for your effort but I'm not going to merge this PR. The reason is that it introduces significant changes that will have to be maintained and tested. Moreover option in GUI will confuse many users who will keep coming for explanation as not all of them are familiar with details of tax calculation that are disscussed in this PR. So after all I do not think there is a valid cause to have this PR merged. Thanks for your effort. |
Polish tax law requires different rounding methods depending on income type, which was not previously implemented. This change (hopefully1) brings the calculation into compliance with Art. 63 Ordynacji Podatkowej (OP).
0,01) precision - at the time of FX calculation, before aggregating further.Basis:
NBP@T-1), but the Act does NOT prescribe special rounding rules,0,01złis the lowest monetary value and sub-grosz values cannot be reported on any tax forms,>= 0.005zł --> 0.01zł).20,00001zł -> 0,01zł) — art. 63 §1a OP0,50zł -> 1zł) — art. 63 §1 OPWarning
Footnotes
Disclaimer: the stated interpretation of the rules reflects my best understanding of the current Polish tax acts and - in some cases - some non-binding advice I've received at Krajowa Informacja Skarbowa (KAS). I'm neither a tax professional, nor an accountant/financial advisor, so do NOT take these as source of "truth" as these clearly are just "works for my personal tax reports", not a tax or legal advice. In fact, I highly suggest reviewing the relevant acts (and/or reaching out to your Tax Office, etc.) and drawing own conclusions. ↩
§ 5 ust. 6 rozporządzenia MF z 28 listopada 2008 r for VAT states:
"Kwoty podatku wykazuje się w złotych bez względu na to, w jakiej walucie określona jest kwota należności w fakturze. Kwoty wykazywane w fakturze zaokrągla się do pełnych groszy, przy czym końcówki poniżej 0,5 grosza pomija się, a końcówki 0,5 grosza i wyższe zaokrągla się do 1 grosza." ↩